/**
 * 2016，thor.com，all rights reserved。
 * 
 * Project：		palmmall-spi
 * Filename：	SComplaintService.java
 * Created：		2016年8月16日
 * Creator：		wolv
 */
package com.thor.palmmall.spi.complaint;

import java.util.List;

import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;

import com.thor.palmmall.spi.common.SContractQueryParam;
import com.thor.palmmall.spi.common.SOperateInfo;
import com.thor.palmmall.spi.common.SQueryContractParam;
import com.thor.palmmall.spi.common.SQueryResult;
import com.thor.palmmall.spi.common.SResponse;
import com.thor.palmmall.spi.common.SUserGroupLoadParam;

/**
 * @author wolv
 *
 */
@Path("/1/complaint")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public interface SComplaintService {

	@POST
	@Path(value = "/create")
	SResponse<String> create(SComplaint4Create complaint, @QueryParam("") SOperateInfo operateInfo);

	/**
	 * 加载投诉单
	 * 
	 * @param uuid
	 *            投诉单uuid
	 * @return 返回体，body为<ComplaintBill>
	 */
	@POST
	@Path(value = "/{id}")
	SResponse<SComplaint> get(@PathParam("id") String id, SUserGroupLoadParam param);

//	/**
//	 * 编辑保存投诉单
//	 * 
//	 * @param record
//	 *            投诉单处理记录
//	 * @return 返回体
//	 */
//	@POST
//	@Path(value = "/save")
//	SResponse<Void> save(SWorkRecord record, @QueryParam("") SOperateInfo operateInfo);

		/**
//	 * 编辑保存投诉单
//	 * 
//	 * @param record
//	 *            投诉单处理记录
//	 * @return 返回体
//	 */
	@POST
	@Path(value = "/save")
	SResponse<Void> save(SComplaint complaint, @QueryParam("") SOperateInfo operateInfo);

	/**
	 * 查询投诉单
	 * 
	 * @param filter
	 *            查询条件
	 * @return 响应体。其body为 QueryResult<ComplaintBill>
	 */
	@POST
	@Path(value = "/query")
	SResponse<SQueryResult<SComplaint>> query(SQueryContractParam param);
	
	/**
     * 获取流程状态
     * 
     */
	@GET
    @Path(value = "/queryOutgoingState")
	SResponse<List<String>> queryOutgoingState();
}
